#ifndef SHOTGUN_HH_
# define SHOTGUN_HH_


/** ShotGun: specific Gun which allow shooting while reloading
 ** reload: loop over (add one bullet in barrel)
 ** has a spread arrea
 ** can store cartridges over it's barrel
 ** low capacity, low shooting rate
 */

class Shotgun : public Gun
{
public:
  // Ctor - Dtor
  Shotgun();

  ~Shotgun();


  /** \return nb bullet added in barrel
   ** use barrel storage cartridges according to \param useBarrelStorage;
   ** use them if others storage are empty
   ** loop while (available && barrel.fill <> full)
   **   first && each 5? turns plays getAmmo annimaion (hand in pocket, ...)
   **   plays annim
   ** if 'brutal' interuption (fire request, ...) drop handfull ammo
   */
  unsigned char Refill(bool useBarrelStorage);

private:
  unsigned char _nbCartridgesOverBarrel; /// included storage capacity
  unsigned char _nbCartridgesOverBarrelBusy; /// included storage capacity used


  // according to barrel, is not function of bullet_type ?
  float _spread; /// angle target / max impact; 100 meters dist


  // Shotgun only ?
  bool _reloadRequestStop;
  bool _reloadRequestStopNow;
};

#endif /* !SHOTGUN_HH_ */
